// 定义懒加载插件

import { useIntersectionObserver } from "@vueuse/core"

export const lazyPlugin = {
    install(app) {
        // 定义懒加载指令逻辑
        app.directive('img-lazy', {
            // 指令钩子函数
            mounted(el, binding) {
                // el 当前指令作用的元素 bingding 指令对象
                const { stop } = useIntersectionObserver(
                    // isIntersecting 回调函数
                    el, ([{ isIntersecting }]) => {
                        // 判断当前元素是否可见
                        if (isIntersecting) {
                            el.src = binding.value;
                            // 取消观察,避免内存泄漏
                            stop();
                        }
                    },
                )
            }
        })
    }
}